Many computing systems operate according to a control flow architecture. In a control flow architecture, the execution of instructions of a program is driven by a program counter that steps through the instructions of a program. In other words, the order of execution of the instructions of the program is defined by the structure of the program itself. In some cases, a control flow architecture may operate improperly when attempting to implement parallel processing. For example, a program may state that an instruction is to be executed even though an input (e.g., operand) of the instruction has not yet been updated by a parallel operating instruction.
Some computing systems utilize a data flow architecture. A data flow architecture is not driven by an order of instruction execution defined by a program. Instead, a data flow architecture executions instruction according to the availability of the inputs (e.g., operands) of the instruction. For example, if an instruction has three operands, a computing system utilizing a data flow architecture will execute the instruction as soon as the three operands are provided to the instruction by other instruction(s) on which the instruction depends. Accordingly, a data flow architecture can perform in a highly parallel environment without concern that instructions will execute before their data dependencies are updated/satisfied. For example, a data flow architecture may be utilized in large scale computing systems that use massive numbers of processing elements to highly parallelize processing.
The figures are not to scale. As used in this patent, stating that any part (e.g., a layer, film, area, or plate) is in any way positioned on (e.g., positioned on, located on, disposed on, or formed on, etc.) another part, indicates that the referenced part is either in contact with the other part, or that the referenced part is above the other part with one or more intermediate part(s) located therebetween. Stating that any part is in contact with another part means that there is no intermediate part between the two parts.